package com.zmn.mcc.permit.client.annotation;

import com.zmn.mcc.permit.client.policy.impl.SetNegativeOnePolicyImpl;
import com.zmn.mcc.permit.client.policy.interfaces.NoPermissionPolicy;

import java.lang.annotation.*;

/**
 * 标记这个方法需要应用数据权限
 *
 * @author hankangshuai
 * @since 2020/1/2
 **/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FilterPermitData {

    /**
     * 无权限时要执行的策略
     */
//    @AliasFor("unPermissionPolicy")
    Class<? extends NoPermissionPolicy> value() default SetNegativeOnePolicyImpl.class;

    /**
     * 过滤数据权限开关字段名 ： 仅用于 dubbo 层数据权限控制 <br/>
     * 通过网关员工认证的接口 通过此字段 判断是否需要权限校验 <br/>
     * 存在 用户信息 此字段值为 true : 需要过滤 <br/>
     * 不在 用户信息 or 无此字段 or 此字段值为 null : 需要过滤
     */
    String limitPermitFieldName() default  "limitPermit";
}
